﻿package  {
	import flash.display.MovieClip;
	
	public class Collision 
	{

		public function Collision() 
		{
			// constructor code
		}
		
		// Checa se o obj1 está colidindo com o topo do obj2
		static public function checkTop(obj1:MovieClip, obj2:MovieClip, newY:Number):Boolean
		{
			
			
			if((obj1.x + obj1.width/2) > (obj2.x - obj2.width/2) && (obj1.x - obj1.width/2) < (obj2.x + obj2.width/2))
			{
				if ((obj1.y + obj1.height/2) <= (obj2.y - obj2.height/2) && (newY + obj1.height) > (obj2.y - obj2.height))
				{
					return true;
				}
			}			
			return false;
		}
		
		// Checa se o obj1 está colidindo com algum lado do obj2 e retorna o ponto de colisão
		static public function checkLeftSide(obj1:MovieClip, obj2:MovieClip, newX:Number):Boolean
		{

			
			//se o objeto 1 está acima da caixa (player)
			if (obj1.y + obj1.height / 2 < obj2.y - obj2.height / 2)
			{
				return false;
			}
			//se o objeto1 está abaixo da caixa (player)
			if (obj1.y - obj1.height / 2 > obj2.y + obj2.height / 2)
			{				
				return false;					
			}
				
			if((obj1.x + obj1.width/2) <= (obj2.x - obj2.width/2) && (newX + obj1.width/2) > (obj2.x - obj2.width/2))
			{
				return true;	
			}
			
			return false;
		}
		
		// Checa se o obj1 está colidindo com algum lado do obj2 e retorna o ponto de colisão
		static public function checkRightSide(obj1:MovieClip, obj2:MovieClip, newX:Number):Boolean
		{
			//se o objeto 1 está acima da caixa (player)
			if (obj1.y + obj1.height / 2 < obj2.y - obj2.height / 2)
			{
				return false;
			}
			//se o objeto1 está abaixo da caixa (player)
			if (obj1.y - obj1.height / 2 > obj2.y + obj2.height / 2)
			{
				return false;
			}
			
			if((obj1.x - obj1.width/2) >= (obj2.x + obj2.width/2) && (newX - obj1.width/2) < (obj2.x + obj2.width/2))
			{
				return true;
			}
			
			return false;
		}
		
		// Checa se o obj1 está colidindo com algum lado do obj2 e retorna o ponto de colisão
		static public function checkLeftBox(obj1:MovieClip, obj2:MovieClip, newX:Number, newY:Number):Boolean
		{

			
			//se o objeto 1 está acima da caixa (player)
			if (newY + obj1.height / 2 < obj2.y - obj2.height / 2)
			{
				return false;
			}
			//se o objeto1 está abaixo da caixa (player)
			if (newY - obj1.height / 2 > obj2.y + obj2.height / 2)
			{				
				return false;					
			}
				
			if((obj1.x + obj1.width/2) <= (obj2.x - obj2.width/2) && (newX + obj1.width/2) > (obj2.x - obj2.width/2))
			{
				return true;	
			}
			
			return false;
		}
		
		// Checa se o obj1 está colidindo com algum lado do obj2 e retorna o ponto de colisão
		static public function checkRightBox(obj1:MovieClip, obj2:MovieClip, newX:Number, newY:Number):Boolean
		{
			//se o objeto 1 está acima da caixa (player)
			if (newY + obj1.height / 2 < obj2.y - obj2.height / 2)
			{
				return false;
			}
			//se o objeto1 está abaixo da caixa (player)
			if (newY - obj1.height / 2 > obj2.y + obj2.height / 2)
			{
				return false;
			}
			
			if((obj1.x - obj1.width/2) >= (obj2.x + obj2.width/2) && (newX - obj1.width/2) < (obj2.x + obj2.width/2))
			{
				return true;
			}
			
			return false;
		}
		
	}
	
}
